def foo(s):
    n=int(s)
    if n==0:
        raise ValueError('invalid value:%s'%s)
    return 10/n

def bar():
    try:
        foo('0')
    except ValueError as e:
        print ('ValueError!')
        raise

bar()
#raise 语句中如果不带参数，就会把当前错误原样抛出
#except 中raise 一个Error ，可以吧一种类型的错误转换成另外一种

try:
    10/0
except ZeroDivisionError:
    raise ValueError
